/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package almacensinproc;

import java.io.File;

/**
 *
 * @author eneko
 */
public class HandlerDirectorio {

    private String directorioBase;

    public HandlerDirectorio(String directorioBase)
    {
        this.directorioBase=directorioBase;
    }

    public String getBase()
    {
        return directorioBase;
    }

    public String preparaRuta(String ruta)
    {
       return ruta.replace("/","//");
    }

   /**
   * Crea un directorio en el directorio actual.
   *
   * @param String  Nombre del directorio a crear.
   */
    
    public boolean crearDirectorio(String nombre)
    {

        //Añadir barras a la base para que no haga referencia a una secuencia de escape.
        boolean status=false;
        File f=new File(preparaRuta(getBase())+("//"+nombre));

        try{
            status=f.mkdirs();
        }
        catch(SecurityException ex){
            ex.printStackTrace();
        }

        if(status==true){
                System.out.println("Directorio creado correctamente");
                return status;
            }
            else
                return false;
    }

   /**
   * Crea un directorio en el directorio actual.
   *
   * @param String  Nombre del directorio a crear.
   * @param String  Nombre del directorio donde queremos crear otro directorio.
   */

    public boolean crearDirectorio(String nombre,String donde)
    {

        //Añadir barras a la base para que no haga referencia a una secuencia de escape.
        File f=new File(preparaRuta(donde)+("//"+nombre));
        boolean status=false;

        try{
            status=f.mkdirs();
        }
        catch(SecurityException ex){
            ex.printStackTrace();
        }

        if(status==true){
                System.out.println("Directorio creado correctamente");
                return status;
            }
            else
                return false;
    }

   /**
   * Borra un directorio en el directorio en el directorio actual.
   *
   * @param String  Nombre del directorio a crear.
   */

   public boolean borrarDirectorio(String nombre)
   {

       File f=new File(preparaRuta(getBase())+("//"+nombre));
       boolean status=false;

       try{
           status=f.delete();
       }
       catch(SecurityException ex){
           ex.printStackTrace();
       }

       if(status==true){
                System.out.println("Directorio borrado correctamente");
                return status;
            }
            else
                return status;
   }

   /**
   * Borra un directorio en el directorio en el directorio indicado.
   *
   * @param String  Nombre del directorio a crear.
   */

   public boolean borrarDirectorio(String nombre,String donde)
   {

       File f=new File(preparaRuta(donde)+("//"+nombre));
       boolean status=false;

       try{
           status=f.delete();
       }
       catch(SecurityException ex){
           ex.printStackTrace();
       }

       if(status==true){
                System.out.println("Directorio borrado correctamente");
                return status;
            }
            else
                return status;
   }

   /**
   * Lista todos los directorios y ficheros del directorio actual.
   *
   */

   public String[] listar()
   {
        File f=new File(preparaRuta(getBase()));
        String directorios[]=null;

        try{
           directorios=f.list();
        }
        catch(SecurityException ex){
           ex.printStackTrace();
        }


        if(directorios==null)
            return null;
        else{
            //Imprimir el conjunto de subdirectorios encontrados.
            for(String elemento:directorios){
                System.out.println(elemento);
            }
            return directorios;
        }
   }

   /**
   * Borra todos los directorios y ficheros del directorio especificado.
   * Hay que tener en cuenta que el método delete de la clase File sólo borra
   * directorios vacíos, así que habrá que borrar los archivos que haya antes de
   * borrar el directorio.
   * @param directorio Ruta del directorio a limpiar.
   */

   public void borrarTodo(File directorio)
   {
       File [] arrayDir = directorio.listFiles();
       
       for(File dir:arrayDir)
       {
            if (dir.isDirectory()) {
            borrarTodo(dir);
            }
            dir.delete();
       }

   }
}
